﻿/*
 * Создан: Оникийчук Антон Игоревич
 * Компания: ООО "ИМСАТ"
 * Дата создания: 26.03.2009
 * Время создания: 14:57
 * Emal разработчика: onikiychuka@gmail.com
 */
using System;
using System.Collections.Generic;

namespace IMSAT.OFTD.DOM
{
	/// <summary>
	/// Класс реализует цепочку делегатов для спецификации поиска.
	/// </summary>
	public class CheckNodeDelegateChain
	{
		Stack<CheckNodeDelegate> _delegateStack = new Stack<CheckNodeDelegate>();
		
		public CheckNodeDelegateChain()
		{
		}
		
		public void AddDelegate(CheckNodeDelegate del)
		{
			_delegateStack.Push(del);
		}
		public bool Check(Node obj)
		{
			if(_delegateStack.Count>0)
			{
				CheckNodeDelegate del = _delegateStack.Peek();
				return del(obj);
			}
			return false;
		}
		public void Pop()
		{
			_delegateStack.Pop();
		}
		public bool IsNonEmpty()
		{
			return _delegateStack.Count>0;
		}
		public void Finish()
		{
			AddDelegate(delegate(Node n){return false;});
		}
	}
}
